/*头文件声明区域*/
#include <REGX52.H>
#include "Key.h"
#include "Seg.h"
#include <INTRINS.H>
/*变量声明区域*/
unsigned char Key_Val,Key_Down,Key_Up,Key_Old;
unsigned char Kd;
unsigned int Sd;
unsigned char Seg_Pos;
unsigned char Seg_Buf[6]={10,10,10,10,10,10};

unsigned char Led_Mode=1;//控制Led模式
unsigned char ucLed=0xfe;//LED状态
unsigned int a;//计时时间
unsigned char Led3[4]={0x7e,0xbd,0xdb,0xe7};//Led模式3
unsigned char i;
unsigned char Seg_Mode;
bit l;//控制数码管流动
/*按键处理函数*/
void Key_Proc()
{
	if(Kd)return;
	Kd=1;
	Key_Val=Key_Read();
	Key_Down=Key_Val&(Key_Val^Key_Old);
	Key_Up=~Key_Val&(Key_Val^Key_Old);
	Key_Old=Key_Val;
	
	switch(Key_Down)
	{
		case 1:
			
		break;
		case 2:
			
		break;
		case 3:
			
		break;
		case 4:
			
		break;
		case 5:
			
		break;
		case 6:
			
		break;
		case 7:
			
		break;
		case 8:
			
		break;
	}
	
}




/*数码管显示函数*/
void Seg_Proc()
{
	if(Sd)return;
	Sd=1;
	
}



/*其他显示函数*/
void Led_Proc()
{
	switch(Led_Mode)
	{
		case 1:
			if(l)
			{
				l=0;
				if(ucLed==0x7e)ucLed=0xfe;
				P1=ucLed;
				ucLed=_crol_(ucLed,1);
				if(ucLed==0x7f)Led_Mode=2;
			}
		break;
		case 2:
			if(l)
			{
				l=0;
				P1=ucLed;
				ucLed=_cror_(ucLed,1);
				if(ucLed==0xfe)Led_Mode=3;
			}
		break;
		case 3:
			if(l)
			{
				l=0;
				if(ucLed==0xfe)i=0;
				ucLed=Led3[i];
				P1=ucLed;
				i++;		
			}
			if(ucLed==0xe7)
			{
				Led_Mode=4;
			}
			
		break;
		case 4:
			if(l)
			{
				l=0;
				if(ucLed==0xe7)i=2;
				ucLed=Led3[i];
				P1=ucLed;
				i--;		
			}
			if(ucLed==0x7e)
			{
				Led_Mode=1;
			}
		break;
	}
}

/*定时器0初始化函数*/
void Timer0Init(void)		//1毫秒@12.000MHz
{
	TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0=1;
	EA=1;
}

/*定时器0中断服务函数*/
void Timer0_Server()interrupt 1
{
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	if(++Kd==10)Kd=0;
	if(++Sd==200)Sd=0;
	if(++Seg_Pos==6)
	{
		Seg_Pos=0;
		Seg_Disp(Seg_Buf[Seg_Pos],Seg_Pos);
	}
	if(++a==400)
	{
		a=0;
		l^=1;
	}
}
/*Main*/
void main()
{
	Timer0Init();
	while(1)
	{
		Key_Proc();
		Seg_Proc();
		Led_Proc();
		
	}
}
	







